#ifndef ZOOKEEPERUTIL_H
#define ZOOKEEPERUTIL_H

#include <semaphore.h>
#include <zookeeper/zookeeper.h>
#include <string>

/* service_name永远znode, method_name采用 -e 临时性znode */

class ZkClient
{
public:
    ZkClient();
    ~ZkClient();
    // zkCli.sh启动连接至zkServer.sh
    void Start();
    // 在zkServer上根据指定的path创建znode节点(znode路径， znode数据长度， 以及节点是否是永久性节点 == 0, 临时性节点结束时会自动删除)
    void Create(const char * path, const char *data, int datalen, int state = 0);
    // 根据参数指定的znode节点路径， 获取znode节点的值
    std::string GetData(const char *path);
private:
    struct _zhandle *m_zhandle;  // 表示一个到 ZooKeeper 服务的会话句柄
};

#endif